﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DataAccess;
using DataAccess.Datatypes;

namespace BussinesLayer.Services
{
    
    public class SiteServices
    {
        private SiteManager _site = new SiteManager();

        //Devuelve todos los sitios
        public IEnumerable<Site> GetSites()
        {
            return _site.GetSites();
        }

        //Devuelve todos los sitios
        public IEnumerable<Site> GetSitesWithMetadata()
        {
            return _site.GetSitesWithMetadata();
        }

        //Devuelve n sitios elegidos al azar
        public IEnumerable<Site> GetNSites(int n)
        {
            return _site.GetNSites(n);
        }

        //Devuelve el sitio solicitado
        public Site GetSite(int siteId)
        {
            return _site.GetSite(siteId);
        }

        //Devuelve los sitios amigos y los atributos del sitio solicitado
        public Site GetSiteData(int siteId)
        {
            return _site.GetSiteData(siteId);
        }

        //Devuelve el logo del sitio soliciado
        public byte[] GetSiteLogo(int siteId)
        {
            return _site.GetSiteLogo(siteId);
        }

        //Agrega un sitio
        public void AddSite(string name, byte[] logo, string style, string goodType, string adminId) 
        {
            _site.AddSite(name, logo, style, goodType, adminId);
        }

        //Modifica un sitio
        public void ModifySite(int id, string name, byte[] logo, string style, string goodType, string adminId)
        {
            _site.ModifySite(id, name, logo, style, goodType, adminId);
        }

        //Agrega un atributo a un sitio
        public int AddAttribute(int siteId, string name)
        {
            return _site.AddAttribute(siteId, name);
        }

        //Modifica un atributo
        public void ModifyAttribute(int attributeId, string name)
        {
            _site.ModifyAttribute(attributeId, name);
        }

        //Agrega un sitio amigo
        public int AddFriendSite(int siteId, string name, string url, string keyword)
        {
            return _site.AddFriendSite(siteId, name, url, keyword);
        }

        //Modifica un sitio amigo
        public void ModifyFriendSite(int fSiteId, string name, string url, string keyword)
        {
            _site.ModifyFriendSite(fSiteId, name, url, keyword);
        }

        //Elimina un sitio amigo
        public void DeleteFriendSite(int fSiteId)
        {
            _site.DeleteFriendSite(fSiteId);
        }

        //Devuelve un sitio amigo seleccionado al azar
        public FriendSite GetFriendSite(int siteId)
        {
            return _site.GetFriendSite(siteId);
        }

        //Devuelve las variables de la plataforma
        public Config GetConfiguration()
        {
            return _site.GetConfiguration();
        }

        //Modifica las variables de la plataforma
        public void ModifyConfiguration(int inapMax, int infracMax, int rankMax)
        {
            _site.ModifyConfiguration(inapMax, infracMax, rankMax);
        }

    }

}
